\section{NAME\label{NAME}\index{NAME}}


Bench::Test::Local - Automatiza ejecuciones en la maquina local

\section{SYNOPSIS\label{SYNOPSIS}\index{SYNOPSIS}}
\begin{verbatim}
   my $local = Bench::Test::Local->new(
      WORKDIR   => '.',
      EXECUTABLE => './mm',
      OUTPUTFILE => 'output.dat',
      BASEDIR   => './base_FEB',
   );
\end{verbatim}
\begin{verbatim}
   my $parameters = ...
   my $output = $local->get_result($parameters);
\end{verbatim}
\begin{verbatim}
   $local->save_result($parameters, $testname);
\end{verbatim}
\section{DESCRIPTION\label{DESCRIPTION}\index{DESCRIPTION}}


El objeto Bench::Test::Local permite ecapsular las operaciones
de ejecucion de programas en la maquina local. Dispone de dos
metodos que permiten obtener la salida de la ejecucion o almacenarla
respectivamente: \texttt{get\_result} y \texttt{save\_result}

\subsection*{Example\label{Example}\index{Example}}


Supongamos un programa cuya salida sea la siguiente:

\begin{verbatim}
  ~/projects/Bench-Test/examples/mm$ ./mm dat/mm_200.dat 
  Filas primera matriz: 200
  Filas segunda matriz: 200
  Columnas segunda matriz: 200
  Time of product: 0.210942
  Result: 4102
\end{verbatim}


Creamos un objeto \texttt{Bench::Test::Local} de la siguiente forma:

\begin{verbatim}
   my $local = Bench::Test::Local->new(
      WORKDIR   => '.',
      EXECUTABLE => './mm',
   );
\end{verbatim}


Con una llamada a \texttt{get\_result} como la que sigue:

\begin{verbatim}
   my $output = $local->get_result('dat/mm_200');
\end{verbatim}


Obtendriamos en \texttt{\$output} una salida similar. En cambio,
con una llamada a \texttt{save\_result} como esta:

\begin{verbatim}
   $local->save_result('dat/mm_200', 'test200');
\end{verbatim}


La salida del programa seria almacenada en el fichero
\texttt{test200.base}.

\section{METHODS\label{METHODS}\index{METHODS}}
\subsection*{The constructor \texttt{new}\label{The_constructor_new}\index{The constructor new}}


Vease una llamada tipca:

\begin{verbatim}
  my $local = Bench::Test::Local->new(
      WORKDIR   => '.',
      EXECUTABLE => './mm',
  );
\end{verbatim}


El constructor acepta los siguientes parametros:

\begin{description}

\item[{WORKDIR:}] \mbox{}

Directorio de trabajo donde se encuentra 
el ejecutable y desde donde se llevaran a cabo todas las ejecuciones.


\item[{EXECUTABLE:}] \mbox{}

Nombre del fichero ejecutable.


\item[{OUTPUTFILE:}] \mbox{}

Parametro opcional que indica el nombre del fichero
donde se encuentra la salida de la ejecucion del programa. Util en
caso de que el programa no imprima la salida por pantalla.


\item[{BASEDIR:}] \mbox{}

Nombre del directorio donde se creara el fichero \texttt{.base}
generado como consecuencia de la llamada a \texttt{save\_result}.


\item[{GET\_RESULT y SAVE\_RESULT:}] \mbox{}

Puntero a subrutinas que seran llamadas
en lugar de 'get\_result' y 'save\_result'. Permite al usuario cambiar
el comportamiento por defecto de dichas rutinas.

\end{description}
\subsection*{The \texttt{get\_result} method\label{The_get_result_method}\index{The get\ result method}}


Vease una llamada tipica:

\begin{verbatim}
  my $parameters = '-n 20 -p';
  my $output = $local->get_result($parameters);
\end{verbatim}


El metodo get\_result acepta como unico parametro una cadena que
indica los parametros con los que se ejecutara el experimento
indicado en el constructor con el parametro EXECUTABLE.

\subsection*{The \texttt{save\_result} method\label{The_save_result_method}\index{The save\ result method}}


Vease una llamada tipica:

\begin{verbatim}
  $local->save_result($parameters, $testname);
\end{verbatim}


El metodo \texttt{save\_result} acepta igual que \texttt{get\_result} una
cadena con los parametros de ejecucion para EXECUTABLE y el
nombre del test correspondiente.



El metodo \texttt{save\_result} automatiza la ejecucion invocando
al metodo \texttt{get\_result} y guarda la salida en un fichero
de texto ubicado en el directorio definido en el constructor
(new) en el parametro BASEDIR. El nombre del archivo se
obtiene concatenando el parametro \textbf{\$testname} con la
extension \textbf{.base}.

\section{SEE ALSO\label{SEE_ALSO}\index{SEE ALSO}}


Bench::Test, Bench::Test::Base, Bench::Test::Remote

\section{AUTHOR\label{AUTHOR}\index{AUTHOR}}


Casiano Rodriguez-Leon
Juan Antonio Gomez Cabo



$<$casiano@ull.es$>$
$<$gomezcabo@yahoo.es$>$

\section{COPYRIGHT AND LICENSE\label{COPYRIGHT_AND_LICENSE}\index{COPYRIGHT AND LICENSE}}


Copyright (C) 2006 by Casiano Rodriguez Leon, Juan Antonio Gomez Cabo



This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.4 or,
at your option, any later version of Perl 5 you may have available.

